#pragma once
#define _SILENCE_STDEXT_ARR_ITERS_DEPRECATION_WARNING
#define SPDLOG_NO_EXCEPTIONS
#include <spdlog/logger.h>

namespace utl
{
	spdlog::logger& logger();
}

#ifndef NDEBUG
#define LOGGER_TRACE(msg,...) utl::logger().trace(msg,__VA_ARGS__)
#define LOGGER_DEBUG(msg,...) utl::logger().debug(msg,__VA_ARGS__)
#define LOGGER_INFO(msg,...) utl::logger().info(msg,__VA_ARGS__)
#define LOGGER_WARN(msg,...) utl::logger().warn(msg,__VA_ARGS__)
#define LOGGER_ERROR(msg,...) utl::logger().error(msg,__VA_ARGS__)
#define LOGGER_CRITICAL(msg,...) utl::logger().critical(msg,__VA_ARGS__)
#else
#define LOGGER_TRACE(msg,...) void(0)
#define LOGGER_DEBUG(msg,...) void(0)
#define LOGGER_INFO(msg,...) void(0)
#define LOGGER_WARN(msg,...) void(0)
#define LOGGER_ERROR(msg,...) void(0)
#define LOGGER_CRITICAL(msg,...) void(0)
#endif